package Day_0218.Reflection_Dynamic_Proxy;

/**
 * @author zxc
 * @date 2023/02/18 21:31
 **/
public class Reflection_Advantages_Disadvantages {
    public static void main(String[] args) {
        /**
         * 反射机制的优缺点
         * ===》
         * 1.反射机制的优点
         * （1）静态编译：
         *  在编译时，确定类型，绑定对象;
         * （2）动态编译：
         *  运行时确定类型，绑定对象。
         *  ====》
         *  动态编译，最大限度地发挥了java的灵活性，体现了多态的应用，有利于降低类之间的耦合性。
         *
         * ===》
         * 总结 ：
         * （1）反射机制的优点，就是可以实现动态创建对象和编译，体现出很大的灵活性，
         * （2）特别是在J2EE的开发中它的灵活性就表现的十分明显。
         * ===》
         *  比如，一个大型的软件，不可能一次就把把它设计的很完美，
         *  当这个程序编译后，发布了，当发现需要更新某些功能时，我们不可能要用户把以前的卸载，再重新安装新的版本，
         *  假如这样的话，这个软件肯定是没有多少人用的。
         *  采用静态的话，需要把整个程序重新编译一次，才可以实现功能的更新，
         *  采用反射机制的话，只需要在运行时，动态地创建对象和编译，就可以实现该功能。
         *
         * 2.反射机制的缺点
         * （1）它的缺点是对性能有影响。
         *
         * ===》
         * 使用反射，基本上是一种解释操作，
         * 我们可以告诉JVM，我们希望做什么并且它满足我们的要求。
         * 这类操作总是慢于只直接执行相同的操作。
         *
         * 3.反射的功能：
         * （1）运行时，构造一个类的对象。
         * （动态编译 ：在运行时，确定类型，绑定对象;）
         * （2）获取一个类所具有的成员变量和方法。
         * （3）调用一个对象的方法。
         * （4）生成动态代理。
         *  等等
         *
         * 4.反射的用途：
         * （1）Spring 框架的 IoC，基于反射创建对象和设置依赖属性。
         * （2）Spring MVC 的请求调用对应方法，也是通过反射。
         * （3）JDBC 的 Class#forName(String className) 方法，也是使用反射。
         *
         */
    }
}
